This invention relates to systems and methods for coding digital images for transmission over error-prone communication channels.
Communication has traditionally been carried out over very reliable networks, such as phone lines and fiber optics. With the exploding popularity of newer mediums, such as the Internet and wireless networks (e.g., satellite, cellular, etc.), an increasingly larger percentage of communication is being conducted over more non-traditional networks. The newer networks offer numerous advantages over their traditional counterparts. Unfortunately, reliability is not necessarily one of them. In comparison to the older communication channels, some of the newer forms of communications channels arc prone to errors.
Delivering multimedia content over error-prone networks, such as the Internet and wireless networks, presents difficult challenges in terms of both efficiency and reliability. Digital images and video pose a particular problem because they often represent the largest percentage or most significant portion of the multimedia content.
Traditionally, images being transmitted over error-prone channels were first compressed using variable length coding (VLC). For example, JPEG and MPEG both use variable length coding. Unfortunately, one characteristic of variable length coding is that it is very sensitive to errors. A single bit error usually results in loss of synchronization and contents between the previous and next synchronization codewords are usually discarded. Also, once an error is introduced into the bitstream at the receiver, it is difficult to recover the entire image. In error-prone channels, errors are likely to occur and thus variable length coding is not a suitable coding technique.
One prior art solution to coding images in a manner that is less sensitive to errors is to use vector quantization (VQ). Vector quantization is a fixed length coding scheme that, unlike the popular VLC scheme, limits bit errors within a codeword such that no error propagation takes place. Thus, VQ is a more preferred coding technique than VLC.
A separate problem concerning communication over error-prone channels is the ability to ensure delivery of at least the most important parts of a transmission. That is, different parts of any given bitstream are more important than other parts. In the video context, for example, lower frequency components are considered to be more important than higher frequency components. Important components deserve higher protection over an error-prone channel to ensure proper delivery.
To address the coding efficiency, another prior art coding scheme uses a fixed-length coding. The coding scheme is based on vector transformation (VT) and vector quantization (VQ), and is sometimes short-handedly referred to as xe2x80x9cVTQxe2x80x9d. VTQ outperforms scalar transform and scalar quantization in coding efficiency. The fundamental reason is that the vector transform reduces inter vector correlation while preserving intra vector correlation in a better manner than scalar transform. With this property, the efficiency of vector quantization is significantly improved.
The VTQ coding scheme is described in more detail in Weiping Li and Ya-Qin Zhang, xe2x80x9cVector-Based Signal Processing and Quantization for Image and Video Compressionxe2x80x9d, Proceedings of the IEEE, Vol. 83, No. 2, February 1995, and in Weiping Li and Ya-Qin Zhang, xe2x80x9cNew insights and results on transform domain VQ of images,xe2x80x9d in Proc. IEEE Conf. Acoustics, Speech, and Signal Processing, Minneapolis, Minn., April 1993, pp. V607-V612.
The coding scheme described below is an improvement of the Li and Zhang coding scheme.
An image distribution system has a source that encodes digital images and transmits them over an error-prone channel to a destination. The source has an image coder that processes the digital images using vector transformation followed by vector quantization (i.e., VTQ processing). The VTQ processing produces groups of vectors and quantized values that are representative of the images. The image coder orders the vectors and assigns vector indexes to the vectors such that a bit error occurring at a less significant bit in a vector index results in less distortion than a bit error occurring at a more significant bit.
Depending upon the format and the capabilities of the source and destination, the image coder may allocate different numbers of bits to different groups of vectors to achieve the best quality given a fixed number of total bits. For example, DC vectors are allocated comparatively more bits, low frequency vectors are allocated the next highest number of bits, and so forth. The image coder relies on an optimized bit allocation map for this allocation process.
The source also has a UEP (Unequal Error Protection) coder that layers the vector indexes according to their significance. Two possible approaches include frequency-based UEP and bit-plane based UEP. With frequency-based UEP, the UEP coder deems the DC vector and lower frequency vectors as more important and thus protects them at the expense of higher frequency vectors. With bit-plane based UEP, the bits forming the vector indexes are layered in planes and the planes encompassing the more significant bits are deemed of higher importance in comparison to other planes, and hence receive greater protection.
The UEP coder may also assign channel codes to each of the layers. In one implementation, the UEP coder assigns Rate Compatible Punctured Convolution (RCPC) channel codes with different code rates to protect the various layers.
The source outputs a bitstream that includes the image values, the bit allocation map, and the layered vector indexes. The source transmits the bitstream over the communication channel to the destination.
The destination receives the bitstream and is equipped with a decoder to decode the bitstream. The decoder recovers the vectors using the vector indexes and bit allocation map and reconstructs the image from the image values and the vectors.